home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Cream of the Crop 1
/
Cream of the Crop 1.iso
/
UTILITY
/
TASEXAM6.ARJ
/
IBDRS_2.TAS
< prev
next >
Wrap
Text File
|
1992-05-05
|
3KB
|
81 lines
{The following Script is an attempt to calculate the IBD
RS index per the Note Martin posted in Prodigy. The ADJ lines
can be used to 'tune' the range of each group of RS values
which start with 99. (Example: when you divide the number of
stocks used by 100 and the result is 2.5, do you want to use
3 stocks in the 99 range or 2 ?) Of course to match IBD's RS
values you would need the same group of stocks they use.
Leon Egleson Mandeville, La.
Prodigy CWRB23A
Modified 5/04/92 to add more weight to last quarter. Lines
40,41,42,and 43 (in the TAS editor) can be changed to add
or delete weight to each qtr. Leon }
{TICNAME.TCK}
#MAX_QUOTES 271
#INDEX 'SP-500'
#OUTPUT_FILE 'IBDRS_2.LST'
IF FIRST_TICKER THEN
BEGIN
COUNT22 = 0; {COUNT OF STOCKS TO DIVIDE BY 100}
COUNT66 = 0; {COUNT OF STOCKS USED}
WRITELN(' **** LAST QUARTER GIVEN MORE WEIGHT ****');
WRITELN(' RS % PRIOR PRIOR RS');
WRITELN('TIC IBD ROC CLOSE CLOSE VOL VOL SP-500');
WRITELN('==== ==== === ====== ====== ==== ===== =====');
END;
IF QUOTE_COUNT < 270 THEN {TO USE ONLY ABOUT A YEAR OF QUOTES}
GOTO AGAIN;
ROC270 : ARRAY; {RATE OF CHANGE LAST 66 DAYS}
YEST : ARRAY;
YESTV : ARRAY;
YEST = C[-1]; {YESTERDAY'S CLOSE}
YESTV = V[-1]; {YESTERDAY'S VOLUME}
BASE = INDEX / INDEX[-270]; {ONE WAY OF CALCULATING RS}
STKBASE = C / C[-270]; { " " " " " }
RELSTR = STKBASE / BASE; { " " " " " }
NUM1 = 0; {COUNTER}
NO1 = 0; {COUNTER}
COUNT44 = 99; {FIRST IBD RS}
ROC270 = ROC(C,66,'%');
rank_1 = ROC270[-198] * .2; {Adj these four lines }
rank_2 = ROC270[-132] * .2; { for weight you want }
rank_3 = ROC270[-66] * .2; { each qtr to have. }
rank_4 = ROC270 * .4; { All 4 should add to 1.0 }
RANK_TOT = (rank_1 + rank_2 + rank_3 + rank_4);
IF C = C THEN {JUST A WAY TO ADVANCE THE COUNTER}
COUNT22 = COUNT22 + 1;
IF C = C THEN {JUST A WAY TO ADVANCE THE COUNTER}
COUNT66 = COUNT66 + 1;
SORTOUT(TICKER,RANK_TOT,C,YEST,V,YESTV,RELSTR);
:AGAIN
IF LAST_TICKER THEN
BEGIN
COUNT22 = COUNT22 / 100; {TOTAL STOCKS USED DIVIDED BY 100}
{COUNT22 = INT(COUNT22);} {ADJ LINE}
SORTON(2,'D');
:RS99
SORTGET(TICKER,RANK_TOT,C,YEST,V,YESTV,RELSTR);
IF NO1 >= COUNT22 THEN {ADJ LINE}
GOSUB READD;
WRITELN(TICKER,' ',INT(COUNT44),INT(rank_tot),C,YEST,' ',INT(V),' ',
INT(YESTV),RELSTR);
NO1 = NO1 + 1; {COUNTER OF NUMBER ACCUMULATED IN GROUP RS}
NUM1 = NUM1 + 1;
IF NUM1 < COUNT66 THEN {IF NOT LAST STOCK LOOP BACK TO RS99}
GOTO RS99;
ELSE {IF LAST STOCK GO DOWN TO FINAL}
GOTO FINAL;
:READD {ROUTINE IF LAST OF A GROUP OF RS COUNTED}
COUNT44 = COUNT44 - 1; {COUNTER TO CHANGE TO NEXT GROUP OF RS}
NO1 = 0; {RESET COUNTER TO START ADDS OF NEW GROUP OF RS}
WRITELN('---------------------------------------------------------');
RETURN;
:FINAL
WRITELN(' ');
WRITELN('---------------------------------------------------------');
WRITELN('TOTAL COMPANIES USED =',' ',INT(COUNT66));
WRITELN('TEN SEGMENT USED =',COUNT22);
WRITELN(' USE ADJ LINES IN THE SCRIPT TO ADJUST FOR NUMBER OF STOCKS');
WRITELN(' IN YOUR FILES FOR THE TEN SEGMENT CALCULATION');